package Utils;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;

/**
 * Clase para gestionar el archivo con la lista de URLS
 * 
 * @author Alejandro Gudi�a Gil
 * @author Jordi Parron
 * @author Victor Tello
 *
 */
public class GestionFichero {

	private FileInputStream file = null;
	private String pathFile = "";
	public ArrayList<String> arrayUrls;

	/**
	 * Constructor por defecto
	 */
	public GestionFichero() {
	}

	/**
	 * Constructor Asigna la ruta del archivo que se va a leer.
	 */
	public GestionFichero(String _pathFile) throws IOException {
		this.pathFile = _pathFile;
		open();
	}

	/**
	 * Crea un InputStream de un arhivo
	 * 
	 * @return True si se abre la conexi�n.
	 * @throws IOException
	 */
	public boolean open() throws IOException {
		try {
			file = new FileInputStream(pathFile);
			return true;
		} catch (IOException e) {
			throw new IOException();
		}
	}

	/**
	 * Cierra el InputStream creado por el Archivo
	 * 
	 * @return True si se cierra la conexi�n.
	 * @throws IOException
	 */
	public boolean close() throws IOException {
		try {
			file.close();
			return true;
		} catch (Exception e) {
			throw new IOException();
		}

	}

	/**
	 * Funci�n para leer el contenido de un archivo e introducirlo en un el
	 * array arrayUrls. Habr� una posici�n del array por cada una de las lineas
	 * del archivo
	 */
	public void readLines() throws IOException {
		try {
			arrayUrls = new ArrayList<String>();
			int ch = 0;
			StringBuffer strContent = new StringBuffer("");
			while ((ch = file.read()) != -1) {
				if (((char) ch == '\n')) {
					arrayUrls.add(strContent.toString());
					strContent = new StringBuffer("");
				} else
					strContent.append((char) ch);
			}
			if (ch == -1)
				arrayUrls.add(strContent.toString());
		} catch (IOException e) {
			throw new IOException();
		}
	}
	/**
	 * Getter del FileInputStream del archivo
	 * @return FileInputStream
	 */
	public FileInputStream getFile() {
		return file;
	}

	/**
	 * Setter del FileInputStream del archivo
	 * @param _file FileInputStream
	 */
	public void setFile(FileInputStream _file) {
		this.file = _file;
	}

	/**
	 * Getter del Path donde se localiza el archivo
	 * @return String
	 */
	public String getPathFile() {
		return pathFile;
	}

	/**
	 * Setter del Path donde se localiza el archivo
	 * @param _pathFile String
	 */
	public void setPathFile(String _pathFile) {
		this.pathFile = _pathFile;
	}
}
